Atomic State Managementのパラダイム
#技術の審美眼 #Atomic_State_Management #プログラミングパラダイム
from CQRSの時空分割と観測
パラダイム
Render As You Fetchパターン
データフロープログラミング
グラフ構造
Event Sourcingといった調停役の概念は登場しない
裏ではEvent Sourcingやガべージコレクションの機構はある
dispatcher, actionも存在しない
利用者のインタフェースはget, setだけである
Opticsのパラダイムの産物と言える
遅延束縛
IOモナド
要素
Atom(ASM)
シンタックス的にはプリミティブな変数
セマンティクス的には遅延結合と遅延初期化とリソース更新/破棄の自動化可能なアクターモデル
Selector(ASM)
セマンティクス的にはgetが観測を意味する
Immutable Model
AtomとSelectorの組み合わせの価値
「それがなにか」(What)と「どうするか」(How)の分離
What: 観測時点の状態のスナップショットを取得するget
How: 状態変化のセマンティクスとなるset
状況によってカスタムフック化してActionのようにできる
→DispatcherとActionを自分でつくれる
インタフェースを変更せずにセマンティクスを変更する
コアなデータ構造を変えることなく継続的な変化に適応するためのCQS
状態を分散できる利点
透過的なキャッシュ管理
キャッシュを正しく使っていればRead onlyの画面にStateはいらない
遅延結合と遅延初期化とリソース更新/破棄の自動化
ReadModelの構築を利用者へ委ねられる
分散型アーキテクチャを構築しやすい
Recoil > Recoil Sync
JotaiならonMount
Code Splitting, minify
Atomic State Managementは後方互換性を保ちやすい